package pe.edu.unmsm.fisi.sysllabus.negocio.servicio.impl;

import java.util.List;

import javax.annotation.Resource;

import org.springframework.dao.DataAccessException;
import org.springframework.stereotype.Service;

import pe.edu.unmsm.fisi.sysllabus.integracion.dao.CursoDAO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.CursoDTO;
import pe.edu.unmsm.fisi.sysllabus.negocio.modelo.dto.VWGrupoCursoDTO;
import pe.edu.unmsm.fisi.sysllabus.negocio.servicio.CursoService;
import pe.edu.unmsm.fisi.sysllabus.negocio.servicio.DocenteService;
import pe.edu.unmsm.fisi.sysllabus.negocio.servicio.PlanEstPeriodoAcademicoService;
import pe.edu.unmsm.fisi.sysllabus.negocio.servicio.PlanEstudioService;
import pe.edu.unmsm.fisi.sysllabus.negocio.servicio.SyllabusService;

@Service
public class CursoServiceImpl implements CursoService {

	@Resource
	CursoDAO cursoDAO;
	@Resource
	SyllabusService syllabusService;
	
	@Resource
	DocenteService docenteService;
	@Resource
	PlanEstudioService planEstudioService;
	@Resource
	PlanEstPeriodoAcademicoService planestEstPeriodoAcadService;
	
	@Override
	public List<CursoDTO> listarCursosxPeriodo(Integer idPlanEstPerAcad)
			throws DataAccessException {
		return cursoDAO.listCursosxPeriodo(idPlanEstPerAcad);
	}
	@Override
	public CursoDTO obtenerCurso(Integer idCurso)
			throws DataAccessException {
		CursoDTO curso=cursoDAO.getCurso(idCurso);
		curso.setSyllabus(syllabusService.listarSyllabusxCurso(idCurso));
		curso.setPlanEstudio(planEstudioService.obtenerPlanEstudioxidCurso(idCurso));
		curso.setPeriodoAcademico(planestEstPeriodoAcadService.obtenerPeriodoAcadxPlan(curso.getIdPlanEstPeriodo()));
		return curso;
	}
	@Override
	public void guardarCurso(CursoDTO cursoEditar) throws DataAccessException {
		if (cursoEditar.getIdCurso()!=null)
			cursoDAO.updateCurso(cursoEditar);	
		else
			cursoDAO.insertCurso(cursoEditar);
	}
	@Override
	public List<VWGrupoCursoDTO> listarCursosxDocente(Integer idUsuario) {
		Integer idDocente=docenteService.obtenerIdDocentexIdUsuario(idUsuario);
		return cursoDAO.listGruposCursosxDocente(idDocente);
	}

}
